#include "main.h"


glMatrix::glMatrix(void)
{
}

glMatrix::glMatrix(double v[16])
{
	for(int i=0;i<16;i++) _Mx[i%4][i/4];	
}

glMatrix::~glMatrix(void)
{
}

void glMatrix::getOpenGlMatrix()
{
	 GLfloat m[16];                       // x  y  z    tr  
	 glGetFloatv (GL_MODELVIEW_MATRIX, m);// m0 m4 m8 | m12
	 _Mx[0][0]=m[0];			          // m1 m5 m9 | m13
	 _Mx[1][0]=m[1];                      // m2 m6 m10| m14
	 _Mx[2][0]=m[2];                      // m3 m7 m11  m15 
	
	 _Mx[0][1]=m[4];
	 _Mx[1][1]=m[5];
	 _Mx[2][1]=m[6];

	 _Mx[0][2]=m[8];
	 _Mx[1][2]=m[9];
	 _Mx[2][2]=m[10];

	 _Mx[0][3]=m[12];
	 _Mx[1][3]=m[13];
	 _Mx[2][3]=m[14];

	 _Mx[3][0]=m[3];
	 _Mx[3][1]=m[7];
	 _Mx[3][2]=m[11];
	 _Mx[3][3]=m[15];

}

void glMatrix::loadToOpenGl()
{
	GLdouble m[16];
	for(int i=0;i<4;i++)
		for(int j=0;j<3;j++)
		{
			m[j+4*i]=_Mx[j][i];
		}
	 m[3]=_Mx[3][0];
	 m[7]=_Mx[3][1];
	 m[11]=_Mx[3][2];
	 m[15]=_Mx[3][3];
	 glLoadMatrixd(m);
	 for (int x=0;x<=15;x++) printf("%f ",m[x]);
	 printf("\n");
}